
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TCMOVI_BANC_I03]      
/*-------------------------------------------------------*/        
/*---Empresa              : OFISIS S.A.                --*/        
/*---Cliente              : OFISIS                 --*/        
/*---Sistema              : Tesoreria                  --*/        
/*---M¸dulo               : Empresa                    --*/        
/*---Programa             : Transferencia entre Bancos --*/        
/*---                       en forma masiva            --*/        
/*---Script               : tcmovi_b.sql               --*/        
/*---Nombre SP            : SP_TCMOVI_BANC_I03         --*/        
/*---Desarrollado por     : Javier Flores A.           --*/        
/*---Fecha Creaci¸n       : 24/06/1999                 --*/        
/*---Base Datos           : Microsoft Sql Server       --*/        
/*---Versi¸n              : 7.0                        --*/        
/*---Invoca a SP          :                            --*/        
/*-------------------------------------------------------*/        
        
/*-------------------------------------------------------*/        
/*---Modificado 1 por     : Maribel Julca Rodriguez      --*/        
/*---Fecha Modificaci©n   : 20/04/2005                   --*/         
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA Y CO_USUA_MODI                           --*/        
/*-------------------------------------------------------*/        
/*-------------------------------------------------------*/              
/*---Modificado 2 por     : Daniel Gutierrez     --*/                  
/*---Fecha Modificaciön   : 18/08/2011                 --*/                  
/*---Detalle Modificaciön : Asignacion de parametros del SP --*/  
/*---para que se guarde a la tabla temporal #TWMOVI_BANC_I03--*/                  
/*-------------------------------------------------------*/                  
        
/*-------------------------------------------------------*/        
/*---Comentarios                                       --*/        
/*---                                                  --*/        
/*---                                                  --*/        
/*-------------------------------------------------------*/        
        
/*-------------------------------------------------------*/        
/*---Drop Proc SP_TCMOVI_BANC_I03                      --*/        
/*---Grant all on SP_TCMOVI_BANC_I03 to public         --*/         
/*---SP_TCMOVI_BANC_I03                                --*/        
/*-------------------------------------------------------*/        
    
 As      
Declare @VNCO_NUEV_NUME TD_IN_001,  @VSCO_NUEV_CHAR TD_VC_008,        
         @VSAA_BNCO_DEST TD_VC_004,  @VSMM_BNCO_DEST TD_VC_002,          
         @VNNU_REGI      TD_IN_001,  @VNNU_SECU TD_IN_001, @VNIM_CONV TD_NU_016_004,        
         @VSCO_MONE      TD_VC_003, @VNIM_TOTA TD_NU_016_004,         
         @VNUL_CORR_INGR TD_IN_001,  @VNUL_CORR_INEG TD_IN_001,  
   
 @ISCO_EMPR       TD_VC_002,         
 @ISCO_USUA_MODI  TD_VC_008_USUA,        
 @ISCO_BANC       TD_VC_003,         
 @ISNU_CNTA_BANC  TD_VC_020,        
 @ISAA_BNCO       TD_VC_004,         
 @ISMM_BNCO       TD_VC_002,         
 @ISTI_MOVI_BANC  TD_VC_001,          
 @ISNU_COMP_BANC  TD_VC_008,         
 @INNU_SECU       TD_IN_001,        
 @IDFE_OPER       TD_DT_001,         
 @IDFE_DISP       TD_DT_001,        
 @ISCO_MONE       TD_VC_003,         
 @ISCO_TIPO_DOCU  TD_VC_003,        
 @ISNU_DOCU_BANC  TD_VC_020,        
 @INIM_MOVI       TD_NU_016_004,         
 @INIM_CONV       TD_NU_016_004,        
 @ISCO_EMPR_DEST  TD_VC_002,        
 @ISCO_BANC_DEST  TD_VC_003,         
 @ISNU_CNTA_DEST  TD_VC_020,         
 @ISNU_COMP_DEST  TD_VC_008,        
 @ISCO_TIPO_DEST  TD_VC_003,         
 @INFA_TIPO_DEST  TD_NU_015_006,         
 @ISDE_OBSE       TD_VC_100,        
 @ISTI_CORR_INEG  TD_VC_001,        
 @ISCO_UNID_CNTB  TD_VC_003,        
 @ISCO_SUBR       TD_VC_003,        
 @ISTI_MOVI_OPER  TD_VC_001,         
 @ISCO_CNTA_EMPR  TD_VC_020,       
 @ISTI_ENTI       TD_VC_001,         
 @ISCO_ENTI       TD_VC_020,         
 @ISTI_DOCU       TD_VC_003,         
 @ISNU_DOCU       TD_VC_020,         
 @ISCO_ORDE_SERV  TD_VC_020,      
 @ISCO_UNID_CNT2  TD_VC_003                   
        
 BEGIN TRAN SP_TCMOVI_BANC_I03    
   
 SELECT  
   
 @ISCO_EMPR = CO_EMPR,         
 @ISCO_USUA_MODI = CO_USUA_MODI,        
 @ISCO_BANC = CO_BANC,         
 @ISNU_CNTA_BANC = NU_CNTA_BANC,        
 @ISAA_BNCO = AA_BNCO,         
 @ISMM_BNCO = MM_BNCO,         
 @ISTI_MOVI_BANC = TI_MOVI_BANC,          
 @ISNU_COMP_BANC = NU_COMP_BANC,         
 @INNU_SECU = NU_SECU,        
 @IDFE_OPER = FE_OPER,         
 @IDFE_DISP = FE_DISP,        
 @ISCO_MONE = CO_MONE,         
 @ISCO_TIPO_DOCU = CO_TIPO_DOCU,        
 @ISNU_DOCU_BANC = NU_DOCU_BANC,        
 @INIM_MOVI = IM_MOVI,         
 @INIM_CONV = IM_CONV,        
 @ISCO_EMPR_DEST = CO_EMPR_DEST,        
 @ISCO_BANC_DEST = CO_BANC_DEST,         
 @ISNU_CNTA_DEST = NU_CNTA_DEST,         
 @ISNU_COMP_DEST = NU_COMP_DEST,        
 @ISCO_TIPO_DEST = CO_TIPO_DEST,         
 @INFA_TIPO_DEST = FA_TIPO_CAMB,         
 @ISDE_OBSE = DE_OBSE,        
 @ISTI_CORR_INEG = TI_CORR_INEG,        
 @ISCO_UNID_CNTB = CO_UNID_CNTB,        
 @ISCO_SUBR = CO_SUBR,        
 @ISTI_MOVI_OPER = TI_MOVI_OPER,         
 @ISCO_CNTA_EMPR = CO_CNTA_EMPR,        
 @ISTI_ENTI = TI_ENTI,         
 @ISCO_ENTI = CO_ENTI,         
 @ISTI_DOCU = TI_DOCU,         
 @ISNU_DOCU = NU_DOCU,         
 @ISCO_ORDE_SERV = CO_ORDE_SERV,      
 @ISCO_UNID_CNT2 = CO_UNID_CNT2   
   
 FROM #TWMOVI_BANC_I03      
        
  Select @VSAA_BNCO_DEST = Convert(Char(4),Datepart(YY, @IDFE_OPER))        
  Select @VSMM_BNCO_DEST = Convert(Char(2),Datepart(MM, @IDFE_OPER))        
        
  If Datalength (rtrim(@VSMM_BNCO_DEST)) = 1        
     Select @VSMM_BNCO_DEST = '0' + @VSMM_BNCO_DEST         
        
  If @INNU_SECU IS NULL        
     Begin        
       Select @VNNU_SECU = NU_SECU        
       From   TDMOVI_TRBA        
       Where  CO_EMPR = @ISCO_EMPR      
       and    CO_UNID_CONC = @ISCO_UNID_CNTB      
       and    CO_BANC = @ISCO_BANC         and    NU_CNTA_BANC = @ISNU_CNTA_BANC      
       and    AA_BNCO = @ISAA_BNCO      
       and    MM_BNCO = @ISMM_BNCO      
       and    TI_MOVI_BANC = @ISTI_MOVI_BANC        
       and    NU_COMP_BANC = @ISNU_COMP_BANC        
        
       If @VNNU_SECU > 0        
          Select @VNNU_SECU = @VNNU_SECU + 1        
       Else        
          Select @VNNU_SECU = 1                 
        
       If Rtrim(@ISCO_TIPO_DOCU) = ''        
          Select @ISCO_TIPO_DOCU = NULL          
        
        
       Select @VSCO_NUEV_CHAR  = MAX(NU_COMP_BANC)         
       From   TCMOVI_BANC         
       Where  CO_EMPR = @ISCO_EMPR_DEST         
       And    CO_UNID_CONC = @ISCO_UNID_CNT2      
       And    CO_BANC = @ISCO_BANC_DEST         
       And    NU_CNTA_BANC = @ISNU_CNTA_DEST        
       And    AA_BNCO = @VSAA_BNCO_DEST        
       And    MM_BNCO = @VSMM_BNCO_DEST         
       And    TI_MOVI_BANC = 'I'          
       And    NU_COMP_BANC Like '000%'         
        
       If @VSCO_NUEV_CHAR is not null         
          Select @VNCO_NUEV_NUME = Convert(Int , @VSCO_NUEV_CHAR) + 1        
       Else        
          Select @VNCO_NUEV_NUME = 1        
        
        
       Select @VSCO_NUEV_CHAR = Replicate('0', 8 - Len(Convert(Varchar(8), @VNCO_NUEV_NUME))) + Convert(Varchar(8), @VNCO_NUEV_NUME)        
--       Select @ISNU_COMP_DEST = @VSCO_NUEV_CHAR         
        
        
       IF RTRIM(ISNULL(@ISCO_BANC_DEST, '')) != '' And RTRIM(ISNULL(@ISNU_CNTA_DEST, '')) != ''        
          Select @ISNU_COMP_DEST = @VSCO_NUEV_CHAR         
       ELSE        
       Begin        
          Select @ISNU_COMP_DEST = NULL        
          Select @ISCO_BANC_DEST = NULL        
          Select @ISNU_CNTA_DEST = NULL        
       End        
        
       IF RTRIM(ISNULL(@ISCO_BANC_DEST, '')) != '' And RTRIM(ISNULL(@ISNU_CNTA_DEST, '')) != ''        
       Begin        
          INSERT INTO TCMOVI_BANC (CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC, NU_COMP_BANC,         
          FE_OPER, CO_TIPO_OPER, CO_TIPO_DOCU, NU_DOCU_BANC, FA_TIPO_CAMB, IM_MOVI,  DE_OBSE, FE_DISP, ST_CONT,        
          TI_SITU, CO_UNID_CONC, CO_SUBR, CO_USUA_CREA, FE_USUA_CREA,CO_USUA_MODI, FE_USUA_MODI)        
        
          Values ( @ISCO_EMPR_DEST, @ISCO_BANC_DEST, @ISNU_CNTA_DEST, @VSAA_BNCO_DEST, @VSMM_BNCO_DEST, 'I',         
          @ISNU_COMP_DEST, @IDFE_OPER, @ISCO_TIPO_DEST, @ISCO_TIPO_DOCU, @ISNU_DOCU_BANC, @INFA_TIPO_DEST,         
          @INIM_CONV, @ISDE_OBSE, @IDFE_DISP,  'N',  'ACT', @ISCO_UNID_CNT2, @ISCO_SUBR, @ISCO_USUA_MODI, GETDATE(),@ISCO_USUA_MODI, GETDATE())        
        
          If @@error <> 0        
            Begin        
              Rollback tran        
        Return        
           End          
       End        
        
       INSERT INTO TDMOVI_TRBA ( CO_EMPR, CO_BANC, NU_CNTA_BANC, TI_MOVI_BANC, AA_BNCO, MM_BNCO,        
       NU_COMP_BANC, NU_SECU, CO_EMPR_DEST, CO_BANC_DEST, NU_CNTA_DEST, AA_BNCO_DEST, MM_BNCO_DEST,         
       TI_MOVI_DEST, NU_COMP_DEST, FE_OPER, CO_TIPO_OPER, CO_TIPO_DOCU, NU_DOCU_BANC, FA_TIPO_CAMB,         
       IM_MOVI, FE_DISP, IM_CONV, DE_OBSE, CO_USUA_CREA, FE_USUA_CREA,CO_USUA_MODI, FE_USUA_MODI, CO_UNID_CONC, CO_SUBR,        
       TI_MOVI, CO_CNTA_EMPR, TI_ENTI, CO_ENTI, TI_DOCU, NU_DOCU, CO_ORDE_SERV, CO_UNID_DEST )        
        
       Values ( @ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISTI_MOVI_BANC, @ISAA_BNCO, @ISMM_BNCO,        
       @ISNU_COMP_BANC, @VNNU_SECU, @ISCO_EMPR_DEST, @ISCO_BANC_DEST, @ISNU_CNTA_DEST, @VSAA_BNCO_DEST,         
       @VSMM_BNCO_DEST, 'I', @ISNU_COMP_DEST, @IDFE_OPER, @ISCO_TIPO_DEST, @ISCO_TIPO_DOCU, @ISNU_DOCU_BANC, @INFA_TIPO_DEST,         
       @INIM_MOVI, @IDFE_DISP, @INIM_CONV, @ISDE_OBSE, @ISCO_USUA_MODI, GETDATE(),@ISCO_USUA_MODI, GETDATE(), @ISCO_UNID_CNTB, @ISCO_SUBR,        
       @ISTI_MOVI_OPER, (Case When Len(IsNull(@ISNU_CNTA_DEST,'')) > 0 Then '' Else @ISCO_CNTA_EMPR End), @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU, @ISNU_DOCU, @ISCO_ORDE_SERV, @ISCO_UNID_CNT2 )        
        
       If @@error <> 0        
          Begin        
            Rollback Tran        
            Return        
          End        
        
      Select  @VNUL_CORR_INGR = CONVERT (int, @ISNU_COMP_DEST )        
      Select  @VNUL_CORR_INEG = CONVERT (int, @ISNU_COMP_DEST )        
      Select  @VNIM_CONV = 0        
         
   If @ISTI_CORR_INEG = 'N'        
       Begin        
       Update TMSABA_MENS        
       Set  UL_CORR_INGR = @VNUL_CORR_INGR , CO_USUA_MODI = @ISCO_USUA_MODI,         
                          FE_USUA_MODI = GETDATE()        
        Where  CO_EMPR = @ISCO_EMPR_DEST         
        And    CO_BANC = @ISCO_BANC_DEST        
        And    NU_CNTA_BANC = @ISNU_CNTA_DEST        
        And   AA_BNCO = @VSAA_BNCO_DEST        
        And    MM_BNCO = @VSMM_BNCO_DEST        
              
          If @@error <> 0        
             Begin        
              Rollback tran        
              Return        
            End        
       End        
   Else        
      Begin        
       Update TMSABA_MENS        
       Set  UL_CORR_INEG = @VNUL_CORR_INEG , CO_USUA_MODI = @ISCO_USUA_MODI,         
            FE_USUA_MODI = GETDATE()         
       Where CO_EMPR = @ISCO_EMPR_DEST         
       And    CO_BANC = @ISCO_BANC_DEST        
       And    NU_CNTA_BANC = @ISNU_CNTA_DEST        
       And   AA_BNCO = @VSAA_BNCO_DEST        
       And    MM_BNCO = @VSMM_BNCO_DEST        
        
       If @@error <> 0        
         Begin        
            Rollback tran        
            Return        
         End        
        End         
      End        
    Else        
         Begin        
             Select @VNIM_CONV = Isnull(IM_CONV,0)        
             From TDMOVI_TRBA        
             Where CO_EMPR = @ISCO_EMPR        
             And   CO_UNID_CONC = @ISCO_UNID_CNTB      
             And   CO_BANC = @ISCO_BANC        
             And   NU_CNTA_BANC = @ISNU_CNTA_BANC        
             And   AA_BNCO = @ISAA_BNCO        
             And   MM_BNCO = @ISMM_BNCO        
             And   TI_MOVI_BANC = @ISTI_MOVI_BANC        
             And   NU_COMP_BANC = @ISNU_COMP_BANC        
             And   NU_SECU =  @INNU_SECU        
        
             Update TDMOVI_TRBA         
             Set FA_TIPO_CAMB =  @INFA_TIPO_DEST,        
    CO_TIPO_DOCU = @ISCO_TIPO_DOCU,        
    NU_DOCU_BANC = @ISNU_DOCU_BANC,        
    FE_DISP  = @IDFE_DISP,        
    TI_MOVI = @ISTI_MOVI_OPER,         
    CO_CNTA_EMPR = (Case When Len(IsNull(@ISNU_CNTA_DEST,'')) > 0 Then '' Else @ISCO_CNTA_EMPR End),        
    CO_TIPO_OPER = @ISCO_TIPO_DEST,        
    CO_SUBR = @ISCO_SUBR,         
    TI_ENTI = @ISTI_ENTI,        
    CO_ENTI = @ISCO_ENTI,        
    TI_DOCU = @ISTI_DOCU,        
    NU_DOCU = @ISNU_DOCU,        
    CO_ORDE_SERV = @ISCO_ORDE_SERV,        
    DE_OBSE = @ISDE_OBSE,        
    IM_MOVI =  @INIM_MOVI,        
    IM_CONV = @INIM_CONV,        
    CO_USUA_MODI = @ISCO_USUA_MODI,        
    FE_USUA_MODI = GETDATE()        
             Where  CO_EMPR = @ISCO_EMPR        
             And    CO_UNID_CONC = @ISCO_UNID_CNTB      
             And    CO_BANC = @ISCO_BANC        
             And    NU_CNTA_BANC = @ISNU_CNTA_BANC        
             And    AA_BNCO = @ISAA_BNCO        
             And    MM_BNCO = @ISMM_BNCO        
             And    TI_MOVI_BANC = @ISTI_MOVI_BANC        
             And    NU_COMP_BANC = @ISNU_COMP_BANC        
             And    NU_SECU =  @INNU_SECU        
        
             If @@error <> 0        
                Begin        
                   Rollback tran        
       Return        
                End        
        
             Update TCMOVI_BANC        
             Set FA_TIPO_CAMB =  @INFA_TIPO_DEST,        
    CO_TIPO_DOCU = @ISCO_TIPO_DOCU,        
    NU_DOCU_BANC = @ISNU_DOCU_BANC,        
    FE_DISP  = @IDFE_DISP,      
    CO_TIPO_OPER = @ISCO_TIPO_DEST,        
    CO_SUBR = @ISCO_SUBR,        
    DE_OBSE = @ISDE_OBSE,        
    IM_MOVI = @INIM_CONV,        
    CO_USUA_MODI = @ISCO_USUA_MODI,        
    FE_USUA_MODI = GETDATE()        
             Where CO_EMPR = @ISCO_EMPR_DEST         
             And   CO_UNID_CONC = @ISCO_UNID_CNT2      
             And   CO_BANC = @ISCO_BANC_DEST        
             And   NU_CNTA_BANC = @ISNU_CNTA_DEST        
             And   AA_BNCO = @VSAA_BNCO_DEST        
             And   MM_BNCO = @VSMM_BNCO_DEST        
             And   TI_MOVI_BANC = 'I'        
             And   NU_COMP_BANC = @ISNU_COMP_DEST        
        
        
             If @@error <> 0        
                Begin        
                   Rollback tran        
       Return        
                End        
        
        End         
        
        Select @VNIM_TOTA = Isnull(Sum(Isnull( Case When TI_MOVI = 'C' Then IM_MOVI         
                                         When TI_MOVI = 'A' Then IM_MOVI*-1        
                    Else IM_MOVI End, 0)),0)        
        From TDMOVI_TRBA        
        Where CO_EMPR = @ISCO_EMPR        
        And   CO_UNID_CONC = @ISCO_UNID_CNTB      
        And   CO_BANC = @ISCO_BANC        
        And   NU_CNTA_BANC = @ISNU_CNTA_BANC        
        And   AA_BNCO = @ISAA_BNCO        
        And   MM_BNCO = @ISMM_BNCO        
        And   TI_MOVI_BANC = @ISTI_MOVI_BANC        
        And   NU_COMP_BANC = @ISNU_COMP_BANC        
                    
        
       Update TCMOVI_BANC        
       Set IM_MOVI = Round(@VNIM_TOTA,2),        
             CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = getdate()                 
       Where CO_EMPR = @ISCO_EMPR         
       And   CO_UNID_CONC = @ISCO_UNID_CNTB      
       And   CO_BANC = @ISCO_BANC         
       And   NU_CNTA_BANC = @ISNU_CNTA_BANC        
       And   AA_BNCO = @ISAA_BNCO        
       And   MM_BNCO = @ISMM_BNCO         
       And   TI_MOVI_BANC = @ISTI_MOVI_BANC         
       And   NU_COMP_BANC = @ISNU_COMP_BANC         
        
       If @@error <> 0        
          Begin        
             Rollback tran        
 Return        
          End          
        
        
 COMMIT TRAN        
        
/* -------------------------- Fin -----------------------------------*/   
GO
